#ifndef _ML_NORMAL_DISTRIBUTION_NUMBER_GENERATOR_H_
#define _ML_NORMAL_DISTRIBUTION_NUMBER_GENERATOR_H_
#include "MLCommon.h"
#include "MLDataPoint.h"
#include "MLDataSet.h"
#include "MLRandomNumberGenerator.h"
#include "MLNumGen_Uniform.h"
_MYLABLIB_BEGIN

class CMLNumGen_Normal : public IMLRandomNumberGenerator
{
public:
	// Constructor and Destructor
	CMLNumGen_Normal(const std::vector<double>& vMean, const std::vector<double>& vVariance);
	~CMLNumGen_Normal(void);

public:
	// Interface
	CMLDataPoint Generate(void);

private:
	// Implementations
	double Generate1D(double dMean, double dDeviation);

private:
	// Fields
	std::vector<double> m_vMean;
	std::vector<double> m_vVariance;
	std::vector<double> m_vStandardDeviation;
	int m_nNumDimensions;
	CMLNumGen_Uniform m_UniGen1;
	CMLNumGen_Uniform m_UniGen2;
};


_MYLABLIB_END
#endif
